package movilmax.sia_corp.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.BaseDatos;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class CargarListaActividades extends ActionSupport{

	private static final long serialVersionUID = 5546045358372446696L;
	
	private List<Listax>  departamentos;
	private List<Listax>  operadores;
	private List<Listax>  tiposActividades;
	private List<Listax>  detalleTiposActividades;
	
	private String  departamento;
	private String  operador;
	private String  tipoActividad;
	private String  detalleTiposActividad;
	
	
	
	@SuppressWarnings("rawtypes")
	public String cargarDepartamentos( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
    	departamentos=new ArrayList<Listax>();
    	String SQL="SELECT D.cod, D.descripcion FROM departamentos D WHERE D.activo='1'";
    	
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  departamentos.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarOperador( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
    	operadores=new ArrayList<Listax>();
    	String SQL=" SELECT U.usuario, U.descripcion FROM departamentos D, usuarios U WHERE D.cod=U.departamento AND U.departamento='"+this.getDepartamento()+"' ORDER BY U.descripcion ";
    	
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("usuario"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  operadores.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	
	
	@SuppressWarnings("rawtypes")
	public String cargarTipoActividad( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		tiposActividades=new ArrayList<Listax>();
    	String SQL=" select T.cod,T.descripcion from tipos_actividad T, tipos_actividad_dep X "+
    			   "where X.departamento='"+ this.getDepartamento() +"' and T.cod=X.tipo_act and X.mostrar='1' and T.mostrar='1' Order by T.descripcion ";
    	
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  tiposActividades.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarDetalleTipoActividad( BaseDatos BD){
		String crit="";
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		
		if(!this.getDepartamento().equals("-1")){
			crit=" and X.dep='" + this.departamento + "' ";
		}
		detalleTiposActividades=new ArrayList<Listax>();
    	String SQL=" Select D.cod,D.descripcion from tipos_actividad_det D,detalle_tipos_actividad X "+
				   " where X.actividad='" + tipoActividad + "' " + crit + " and X.detalle=D.cod and D.mostrar ='1' and X.mostrar='1' and not D.cod in('5','15')  Order By D.descripcion ";
    	this.addActionError(SQL);
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  detalleTiposActividades.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	
	
	
	@SuppressWarnings("rawtypes")
	public String getJSON(){
		Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		Conectar BASE=new Conectar();
		if(BASE.getMsg().equals("SI")){
			cargarDepartamentos(BASE.getBaseDatos());
			cargarOperador(BASE.getBaseDatos());
			cargarTipoActividad(BASE.getBaseDatos());
			cargarDetalleTipoActividad(BASE.getBaseDatos());
			BASE.getBaseDatos().cerrarConexion();
		  	return SUCCESS;
		}else{
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
  }

	
	
	
	
	
	
	
	
	
	/***********************************GETTERS AND SETTERS******************************************/
	public List<Listax> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<Listax> departamentos) {
		this.departamentos = departamentos;
	}

	public List<Listax> getOperadores() {
		return operadores;
	}

	public void setOperadores(List<Listax> operadores) {
		this.operadores = operadores;
	}

	public String getDepartamento() {
		return departamento;
	}

	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}

	public String getOperador() {
		return operador;
	}

	public void setOperador(String operador) {
		this.operador = operador;
	}

	public List<Listax> getTiposActividades() {
		return tiposActividades;
	}

	public void setTiposActividades(List<Listax> tiposActividades) {
		this.tiposActividades = tiposActividades;
	}

	public List<Listax> getDetalleTiposActividades() {
		return detalleTiposActividades;
	}

	public void setDetalleTiposActividades(List<Listax> detalleTiposActividades) {
		this.detalleTiposActividades = detalleTiposActividades;
	}

	public String getTipoActividad() {
		return tipoActividad;
	}

	public void setTipoActividad(String tipoActividad) {
		this.tipoActividad = tipoActividad;
	}

	public String getDetalleTiposActividad() {
		return detalleTiposActividad;
	}

	public void setDetalleTiposActividad(String detalleTiposActividad) {
		this.detalleTiposActividad = detalleTiposActividad;
	}
	
	
	
	

}
